-- 设置项目名称和版本
set_project("cloudshare")
set_version("1.0.0", {build = "%Y%m%d%H%M"})

-- 设置 C++ 标准
set_languages("c++17")

-- 定义目标文件存放目录
set_objectdir("build/$(plat)/$(arch)/$(mode)")
set_targetdir("bin/$(plat)/$(arch)/$(mode)")

-- 添加编译器和链接器标志
add_cxflags("-Wno-error=deprecated-declarations", "-fno-strict-aliasing", "-Wno-error=expansion-to-defined -fext-numeric-literals")
add_mxflags("-Wno-error=deprecated-declarations", "-fno-strict-aliasing", "-Wno-error=expansion-to-defined")

-- 设置警告级别
set_warnings("all", "error")
-- set_warnings("all", "extra")  -- 启用所有警告和额外警告
-- set_warnings("everything")
-- 启用所有警告和非标准警告
-- set_warnings("all", "pedantic")

-- 区分调试模式和发布模式
-- xmake f -m debug
-- xmake f -m release
add_rules("mode.release", "mode.debug")

if is_mode("debug") then
    add_cxxflags("-g") -- 为 C++ 文件添加调试信息
    add_ldflags("-g") -- 为链接器添加调试信息
else
    add_cxxflags("-O2") -- 优化编译
end


-- 添加头文件目录
add_includedirs("include")
add_includedirs("src/jsoncpp/include")

-- 包含子模块
includes("src/workflow")
includes("src/jsoncpp")
includes("src/backend")
includes("src/connpool")
includes("example")